home *** CD-ROM | disk | FTP | other *** search
/ Merciful 2 / Merciful - Disc 2.iso / software / l / littletales-polish.dms / littletales-polish.adf / tales / tales.amosSourceCode < prev    next >
AMOS Source Code  |  1996-02-02  |  28KB  |  1,270 lines

  1. Set Buffer 20
  2. Set Double Precision 
  3. Close Editor 
  4. Close Workbench 
  5. Break Off 
  6. Global PROMIEN_OKA
  7. Global OKO1_X,OKO1_Y,OKO2_X,OKO2_Y
  8. Global ZRENICA1_X,ZRENICA1_Y,ZRENICA2_X,ZRENICA2_Y
  9. Global GRA,STREFA,WYBRANE,A$
  10. Dim FONTY(9)
  11. Dim ZAD$(3,7,50)
  12. Dim NAZWY$(3,7)
  13. Dim DLUGOSC(3,7)
  14. Dim TAB_LOS(20)
  15. Global FONTY()
  16. Global TAB_LOS(),ILOSC_LOS,POZOSTAWIONE
  17. Global ZAD$(),NAZWY$(),DLUGOSC()
  18. Global KURSOR_X,KURSOR_Y,KRATA_X,KRATA_Y,WIERZCHOLEK
  19. Global POCZATEK,DLUG_BANKU
  20. Global KOLOR_ATRAMENTU,KOLOR_TLA,KOLOR_FLASH,KOLOR_ATRAMENTU0
  21. Global KATALOG$,ROZSZERZENIE$
  22. Global NR_FONTU,RODZAJ_LINII,STYL,ODPOW
  23. Global PIERWSZY_RAZ,ODPOW_X,ODPOW_Y,WYNIK$,ODPOWIEDZ$
  24. Global PRZESUNIECIE
  25. Global OKNO_X1,OKNO_Y1,OKNO_X2,OKNO_Y2
  26. Global PRZYKLAD,KONIEC
  27. Global INFO_TEKST$,INFO_X
  28. Global ODPOWIEDZIAL,PRAWIDLOWA_ODP,NOWY_ROZDZIAL
  29. Global ROZDZIAL,PODROZDZIAL,NR_ZADANIA,SPRAW,KALK_KONIEC,ODPOW$
  30. Global MASKA,POMOC,INFO
  31. INIT
  32. Repeat 
  33.    WYBOR
  34.    PLANSZA
  35.    ZADANIA
  36. Until False
  37. End 
  38. Procedure INIT
  39.    Close Editor 
  40.    Screen Open 0,640,256,16,Hires
  41.    Hide 
  42.    Curs Off 
  43. '   LEKCJA 
  44.    Curs Off 
  45.    Cls KOLOR_TLA
  46.    Dir$="Tales:"
  47.    Load Iff "czolowka"
  48.    OKNO_X1=22
  49.    OKNO_Y1=21
  50.    OKNO_X2=408
  51.    OKNO_Y2=175
  52.    OKO1_X=433
  53.    OKO1_Y=215
  54.    OKO2_X=470
  55.    OKO2_Y=215
  56.    PROMIEN_OKA=10
  57.    PRZESUNIECIE=1
  58.    KRATA_X=6
  59.    KRATA_Y=3
  60.    KOLOR_TLA=0
  61.    KOLOR_ATRAMENTU=7
  62.    KOLOR_FLASH=3
  63.    DLUG_BANKU=1000
  64.    KATALOG$="Tales:Zadania"
  65.    ROZSZERZENIE$=""
  66.    PREDKOSC_FADE=4
  67.    
  68.    MASKA=False
  69.    ODPOW=False
  70.    PIERWSZY_RAZ=True
  71.    WIERZCHOLEK=0
  72.    GRA=False
  73.    WYBRANE=False
  74.    KOLOR_ATRAMENTU0=KOLOR_ATRAMENTU
  75.    Curs Off 
  76.    Gr Writing 0
  77.    Paper KOLOR_TLA
  78.    Flash KOLOR_FLASH,"(f00,13)(0f0,13)(00f,13)"
  79.    Get Fonts 
  80.    USTAL_FONTY
  81.    Load "oczy.abk"
  82.    Load "przyciski.abk"
  83.    Resource Bank 16
  84.    PRZYCISKI
  85.    Reserve As Work 6,DLUG_BANKU
  86.    POCZATEK=Start(6)
  87.    Limit Mouse 100,42 To 600,397
  88.  
  89.    Screen Open 1,640,256,16,Hires
  90.    Screen 1
  91.    Screen Hide 
  92. '   Load Iff "w1"
  93. '   Get Block 3,0,0,640,256
  94.    Load Iff "w2"
  95.    Get Block 5,168,27,320,190
  96.    Load Iff "w3"
  97.    Get Block 7,168,27,320,190
  98.    Load Iff "w4"
  99.    Get Block 9,168,27,320,190
  100.    Load Iff "plansza"
  101.    Get Block 11,0,0,640,256
  102.    
  103.    USTAW
  104.    Screen 0
  105.    Get Palette 1
  106.    Screen Close 1
  107.    Repeat 
  108.    Until Mouse Click
  109.    Cls KOLOR_TLA
  110.    Ink 21
  111.    Flash 21,"(000,10)(fff,10)"
  112.    Bar 1,1 To 4,9
  113.    Get Sprite 1,1,1 To 4,9
  114.    Cls KOLOR_TLA
  115.    Track Stop 
  116.    Track Loop On 
  117.    Show 
  118. End Proc
  119. Procedure LEKCJA
  120.    Dim T$(20)
  121.    Data "6A43F","71ZX3","1FHW5","2347A","CF2G7","B2CD4","687C4","2FA5H","1G9AH","179CY"
  122.    Data "HYL24","3Z12K","L3MC7","W49K1","23D8P","S36W1","R81B7","13LMZ","23HFX","DZ64G"
  123.    For I=1 To 20
  124.       Read T$(I)
  125.    Next I
  126.    Paper 0
  127.    For I=1 To 3
  128.       NUMER=Rnd(19)+1
  129.       Cls 0
  130.       Curs On 
  131.       Print At(31,10);"Test antypiracki"
  132.       Print At(30,13);"Podaj kod numer";NUMER
  133.       Locate 36,16
  134.       Input "";KOD$
  135.       Curs Off 
  136.       If Upper$(KOD$)=T$(NUMER)
  137.          Pop Proc
  138.       End If 
  139.       
  140.    Next I
  141.    End 
  142. End Proc
  143. Procedure NTEXT[Y,TEKST$]
  144.    X=(OKNO_X2+OKNO_X1)/2-(Text Length(TEKST$))/2
  145.    Text X,Y,TEKST$
  146. End Proc
  147. Procedure CZYSC
  148.    Cls KOLOR_TLA,OKNO_X1,OKNO_Y1 To OKNO_X2,OKNO_Y2
  149. End Proc
  150. Procedure USTAW_ZAD
  151.    ZAD$(1,1,1)="1a"
  152.    ZAD$(1,1,2)="1b"
  153.    ZAD$(1,1,3)="1c"
  154.    ZAD$(1,1,4)="1d"
  155.    ZAD$(1,1,5)="1e"
  156.    
  157.    ZAD$(1,2,1)="1a"
  158.    ZAD$(1,2,2)="1b"
  159.    ZAD$(1,2,3)="1c"
  160.    ZAD$(1,2,4)="1d"
  161.    ZAD$(1,2,5)="1e"
  162.    ZAD$(1,2,6)="2a"
  163.    ZAD$(1,2,7)="2b"
  164.    ZAD$(1,2,8)="2c"
  165.    ZAD$(1,2,9)="2d"
  166.    ZAD$(1,2,10)="2e"
  167.    ZAD$(1,2,11)="3a"
  168.    ZAD$(1,2,12)="3b"
  169.    ZAD$(1,2,13)="3c"
  170.    ZAD$(1,2,14)="3d"
  171.    ZAD$(1,2,15)="3e"
  172.    
  173.    ZAD$(1,3,1)="1a"
  174.    ZAD$(1,3,2)="1b"
  175.    ZAD$(1,3,3)="1c"
  176.    ZAD$(1,3,4)="2a"
  177.    ZAD$(1,3,5)="2b"
  178.    ZAD$(1,3,6)="2c"
  179.    
  180.    ZAD$(1,4,1)="1a"
  181.    ZAD$(1,4,2)="1b"
  182.    ZAD$(1,4,3)="1c"
  183.    ZAD$(1,4,4)="1d"
  184.    ZAD$(1,4,5)="2a"
  185.    ZAD$(1,4,6)="2b"
  186.    ZAD$(1,4,7)="2c"
  187.    ZAD$(1,4,8)="3a"
  188.    ZAD$(1,4,9)="3b"
  189.    ZAD$(1,4,10)="3c"
  190.    ZAD$(1,4,11)="4a"
  191.    ZAD$(1,4,12)="4b"
  192.    ZAD$(1,4,13)="4c"
  193.    ZAD$(1,4,14)="4d"
  194.    
  195.    ZAD$(1,5,1)="1a"
  196.    ZAD$(1,5,2)="1b"
  197.    ZAD$(1,5,3)="2a"
  198.    ZAD$(1,5,4)="2b"
  199.    ZAD$(1,5,5)="2c"
  200.    
  201.    ZAD$(1,6,1)="1a"
  202.    ZAD$(1,6,2)="1b"
  203.    ZAD$(1,6,3)="1c"
  204.    ZAD$(1,6,4)="1d"
  205.    ZAD$(1,6,5)="2a"
  206.    ZAD$(1,6,6)="2b"
  207.    ZAD$(1,6,7)="2c"
  208.    ZAD$(1,6,8)="2d"
  209.    ZAD$(1,6,9)="3a"
  210.    ZAD$(1,6,10)="3b"
  211.    ZAD$(1,6,11)="3c"
  212.    ZAD$(1,6,12)="3d"
  213.    ZAD$(1,6,13)="4a"
  214.    ZAD$(1,6,14)="4b"
  215.    ZAD$(1,6,15)="4c"
  216.    ZAD$(1,6,16)="4d"
  217.    
  218.    ZAD$(2,1,1)="1a"
  219.    ZAD$(2,1,2)="1b"
  220.    ZAD$(2,1,3)="1c"
  221.    ZAD$(2,1,4)="1d"
  222.    ZAD$(2,1,5)="1e"
  223.    
  224.    ZAD$(2,2,1)="1a"
  225.    ZAD$(2,2,2)="1b"
  226.    ZAD$(2,2,3)="1c"
  227.    ZAD$(2,2,4)="1d"
  228.    ZAD$(2,2,5)="1e"
  229.    ZAD$(2,2,6)="2a"
  230.    ZAD$(2,2,7)="2b"
  231.    ZAD$(2,2,8)="2c"
  232.    ZAD$(2,2,9)="2d"
  233.    ZAD$(2,2,10)="2e"
  234.    
  235.    ZAD$(2,3,1)="1a"
  236.    ZAD$(2,3,2)="1b"
  237.    ZAD$(2,3,3)="1c"
  238.    ZAD$(2,3,4)="2a"
  239.    ZAD$(2,3,5)="2b"
  240.    ZAD$(2,3,6)="2c"
  241.    
  242.    ZAD$(2,4,1)="1a"
  243.    ZAD$(2,4,2)="1b"
  244.    ZAD$(2,4,3)="1c"
  245.    ZAD$(2,4,4)="1d"
  246.    ZAD$(2,4,5)="1e"
  247.    ZAD$(2,4,6)="2a"
  248.    ZAD$(2,4,7)="2b"
  249.    ZAD$(2,4,8)="2c"
  250.    ZAD$(2,4,9)="2d"
  251.    
  252.    ZAD$(2,5,1)="1a"
  253.    ZAD$(2,5,2)="1b"
  254.    ZAD$(2,5,3)="1c"
  255.    ZAD$(2,5,4)="1d"
  256.    ZAD$(2,5,5)="1e"
  257.    ZAD$(2,5,6)="1f"
  258.    
  259.    ZAD$(2,6,1)="1a"
  260.    ZAD$(2,6,2)="1b"
  261.    ZAD$(2,6,3)="1c"
  262.    ZAD$(2,6,4)="1d"
  263.    ZAD$(2,6,5)="1e"
  264.    ZAD$(2,6,6)="2a"
  265.    ZAD$(2,6,7)="2b"
  266.    ZAD$(2,6,8)="2c"
  267.    ZAD$(2,6,9)="2d"
  268.    ZAD$(2,6,10)="3a"
  269.    ZAD$(2,6,11)="3b"
  270.    ZAD$(2,6,12)="3c"
  271.    ZAD$(2,6,13)="3d"
  272.    
  273.    ZAD$(2,7,1)="1a"
  274.    ZAD$(2,7,2)="1b"
  275.    ZAD$(2,7,3)="1c"
  276.    ZAD$(2,7,4)="2a"
  277.    ZAD$(2,7,5)="2b"
  278.    ZAD$(2,7,6)="2c"
  279.    ZAD$(2,7,7)="3a"
  280.    ZAD$(2,7,8)="3b"
  281.    ZAD$(2,7,9)="3c"
  282.    
  283.    ZAD$(3,1,1)="1a"
  284.    ZAD$(3,1,2)="1b"
  285.    ZAD$(3,1,3)="1c"
  286.    ZAD$(3,1,4)="1d"
  287.    
  288.    ZAD$(3,2,1)="1a"
  289.    ZAD$(3,2,2)="1b"
  290.    ZAD$(3,2,3)="1c"
  291.    ZAD$(3,2,4)="1d"
  292.    ZAD$(3,2,5)="1e"
  293.    
  294.    ZAD$(3,3,1)="1a"
  295.    ZAD$(3,3,2)="1b"
  296.    ZAD$(3,3,3)="1c"
  297.    ZAD$(3,3,4)="1d"
  298.    ZAD$(3,3,5)="1e"
  299.    ZAD$(3,3,6)="1f"
  300.    
  301.    ZAD$(3,4,1)="1a"
  302.    ZAD$(3,4,2)="1b"
  303.    ZAD$(3,4,3)="1c"
  304.    ZAD$(3,4,4)="1d"
  305.    
  306.    ZAD$(3,5,1)="1a"
  307.    ZAD$(3,5,2)="1b"
  308.    ZAD$(3,5,3)="1c"
  309.    ZAD$(3,5,4)="2a"
  310.    ZAD$(3,5,5)="2b"
  311.    ZAD$(3,5,6)="3a"
  312.    ZAD$(3,5,7)="3b"
  313.    ZAD$(3,5,8)="4a"
  314.    ZAD$(3,5,9)="4b"
  315.    ZAD$(3,5,10)="4c"
  316.    
  317. End Proc
  318. Procedure USTAW
  319.    NAZWY$(1,1)="Powt�rzenie wiadomo�ci o liczbach"
  320.    NAZWY$(1,2)="Pot�gi o wyk�adnikach naturalnych"
  321.    NAZWY$(1,3)="Przekszta�cenia wyra�e�"
  322.    NAZWY$(1,4)="Pot�gi o wyk�adnikach ca�kowitych"
  323.    NAZWY$(1,5)="Pierwiastki kwadratowe"
  324.    NAZWY$(1,6)="Pierwiastki stopnia n"
  325.    NAZWY$(2,1)="Powt�rzenie wiadomo�ci o funkcjach"
  326.    NAZWY$(2,2)="Proporcjonalno��. Funkcja liniowa"
  327.    NAZWY$(2,3)="Wielko�ci odwrotnie proporcjonalne"
  328.    NAZWY$(2,4)="R�wnania liniowe"
  329.    NAZWY$(2,5)="Nier�wno�ci"
  330.    NAZWY$(2,6)="Uk�ady r�wna� liniowych"
  331.    NAZWY$(2,7)="Obliczenia procentowe"
  332.    NAZWY$(3,1)="Figury geometryczne p�askie"
  333.    NAZWY$(3,2)="Symetria figur"
  334.    NAZWY$(3,3)="Przystawanie figur"
  335.    NAZWY$(3,4)="Jednok�adno�� i podobie�stwo"
  336.    NAZWY$(3,5)="Twierdzenie Pitagorasa"
  337.    
  338.    USTAW_ZAD
  339.    For ROZ=1 To 3
  340.       For PODROZ=1 To 7
  341.          NR=1
  342.          While ZAD$(ROZ,PODROZ,NR)<>""
  343.             NR=NR+1
  344.          Wend 
  345.          DLUGOSC(ROZ,PODROZ)=NR-1
  346.       Next PODROZ
  347.    Next ROZ
  348. End Proc
  349. Procedure STEROWANIE
  350.    STREFA=Dialog(1)
  351.    If STREFA=23
  352.       SPRAW=True
  353.       KONIEC=True
  354.    End If 
  355.    If STREFA=24 Then KONIEC
  356.    If STREFA=21
  357.       If MASKA
  358.          Pop Proc
  359.       End If 
  360.       PRZYKLAD= Not PRZYKLAD
  361.       KONIEC=True
  362.    End If 
  363.    If STREFA=20 Then MUZYKA
  364.    If STREFA=22
  365.       NOWY_ROZDZIAL=True
  366.       KONIEC=True
  367.    End If 
  368.    If STREFA=18
  369.       INFO=True
  370.       KONIEC=True
  371.    End If 
  372.    If STREFA=19
  373.       POMOC=True
  374.       KONIEC=True
  375.    End If 
  376. End Proc
  377. Procedure RESET
  378.    POMOC=False
  379.    INFO=False
  380.    KONIEC=False
  381.    NOWY_ROZDZIAL=False
  382.    SPRAW=False
  383. End Proc
  384. Procedure INFO
  385.    RESET
  386.    CZYSC
  387.    RYSUJ["Info"]
  388.    CZYSC
  389. End Proc
  390. Procedure INIT_LOS[ILOSC]
  391.    ILOSC_LOS=ILOSC
  392.    POZOSTAWIONE=ILOSC
  393.    For I=1 To ILOSC
  394.       TAB_LOS(I)=True
  395.    Next I
  396. End Proc
  397. Procedure LOS
  398.    If POZOSTAWIONE>1
  399.       R=Rnd(POZOSTAWIONE-1)+1
  400.    Else 
  401.       R=1
  402.    End If 
  403.    N=0
  404.    For I=1 To ILOSC_LOS
  405.       If TAB_LOS(I)
  406.          N=N+1
  407.          If N=R
  408.             TAB_LOS(I)=False
  409.             POZOSTAWIONE=POZOSTAWIONE-1
  410.             Pop Proc[I]
  411.          End If 
  412.       End If 
  413.    Next I
  414. End Proc[0]
  415. Procedure SPRAWDZIAN
  416.    Dim Z$(5)
  417.    POCZATEK:
  418.    RESET
  419.    MASKA=True
  420.    CZYSC
  421.    Ink 10
  422.    NTEXT[50,"Sprawdzian"]
  423.    NTEXT[90,"Musisz rozwi�za� 5 zada�"]
  424.    NTEXT[100,"losowo wybranych z ca�ego rozdzia�u"]
  425.    STREFA=0
  426.    INFO_ON["Naci�nij przycisk myszy aby konynuowa�"]
  427.    Repeat 
  428.    Until Mouse Click or STREFA<>0
  429.    INFO_OFF
  430.    Randomize Timer
  431.    
  432.    If ROZDZIAL=1 Then INIT_LOS[6]
  433.    If ROZDZIAL=2 Then INIT_LOS[7]
  434.    If ROZDZIAL=3 Then INIT_LOS[5]
  435.  
  436.    For I=1 To 5
  437.       LOS
  438.       R=Param
  439.       NR=Rnd(DLUGOSC(ROZDZIAL,R)-1)+1
  440.       Z$(I)=Right$(Str$(ROZDZIAL),1)+"."+Right$(Str$(R),1)+"."+ZAD$(ROZDZIAL,R,NR)
  441.    Next I
  442.    
  443.    ZADANIA_ROZWIAZANE=0
  444.    For I=1 To 5
  445.       SKOK: KOMUNIKAT[I]
  446.       RYSUJ[Z$(I)]
  447.       If KONIEC
  448.          MASKA=False
  449.          Repeat 
  450.             K=True
  451.             If SPRAW
  452.                Goto POCZATEK
  453.             End If 
  454.             If NOWY_ROZDZIAL
  455.                Pop Proc
  456.             End If 
  457.             If INFO
  458.                K=False
  459.                INFO
  460.             End If 
  461.             If POMOC
  462.                K=False
  463.                HELP
  464.             End If 
  465.          Until K
  466.          Goto SKOK
  467.       End If 
  468.       OCENA_ZADANIA
  469.       If PRAWIDLOWA_ODP Then Inc ZADANIA_ROZWIAZANE
  470.    Next I
  471.    CZYSC
  472.    Ink 7
  473.    If ZADANIA_ROZWIAZANE=1 Then ZZ$=" zadanie"
  474.    If(ZADANIA_ROZWIAZANE>1) and(ZADANIA_ROZWIAZANE<5) Then ZZ$=" zadania"
  475.    If(ZADANIA_ROZWIAZANE=5) or(ZADANIA_ROZWIAZANE=0) Then ZZ$=" zada�"
  476.    
  477.    NTEXT[90,"Rozwi�za�e� "+Str$(ZADANIA_ROZWIAZANE)+ZZ$]
  478.    STREFA=0
  479.    INFO_ON["Naci�nij przycisk myszy aby konynuowa�"]
  480.    Repeat 
  481.    Until Mouse Click or STREFA<>0
  482.    INFO_OFF
  483.    MASKA=False
  484. End Proc
  485. Procedure KOMUNIKAT[NR]
  486.    USTAW_FONT[9]
  487.    CZYSC
  488.    Ink 10
  489.    NTEXT[50,"Sprawdzian"]
  490.    NTEXT[90,"Zadanie "+Str$(NR)]
  491.    NWAIT[50]
  492. End Proc
  493. Procedure ZADANIA
  494.    NOWY_ROZDZIAL=False
  495.    SPRAW=False
  496.    NR_ZADANIA=1
  497.    While ZAD$(ROZDZIAL,PODROZDZIAL,NR_ZADANIA)<>''
  498.       Z$=Right$(Str$(ROZDZIAL),1)+"."+Right$(Str$(PODROZDZIAL),1)+"."+ZAD$(ROZDZIAL,PODROZDZIAL,NR_ZADANIA)
  499.       ZADANIE[Z$]
  500.       If ODPOWIEDZIAL
  501.          OCENA_ZADANIA
  502.          NR_ZADANIA=NR_ZADANIA+1
  503.       End If 
  504.       Repeat 
  505.          K=True
  506.          If SPRAW
  507.             K=False
  508.             SPRAWDZIAN
  509.          End If 
  510.          If NOWY_ROZDZIAL Then Pop Proc
  511.          If INFO
  512.             K=False
  513.             INFO
  514.          End If 
  515.          If POMOC
  516.             K=False
  517.             HELP
  518.          End If 
  519.       Until K
  520.    Wend 
  521.    CZYSC
  522.    Ink 10
  523.    USTAW_FONT[9]
  524.    NTEXT[90,"Koniec zada�"]
  525.    NWAIT[85]
  526. End Proc
  527. Procedure OCENA_ZADANIA
  528.    If PRAWIDLOWA_ODP
  529.       INFO_ON["Bardzo dobrze"]
  530.    Else 
  531.       INFO_ON["�le"]
  532.    End If 
  533.    NWAIT[100]
  534.    INFO_OFF
  535. End Proc
  536. Procedure CLICK
  537.    Repeat 
  538.    Until Mouse Click or(Inkey$<>"") or KONIEC or STREFA<>0
  539. End Proc
  540. Procedure PROBA
  541.    Repeat 
  542.       STREFA=Dialog(1)
  543.       Locate 10,10
  544.       If STREFA>0
  545.          Print "Strefa ";STREFA;"      "
  546.       End If 
  547.       Limit Mouse 
  548.    Until False
  549.    Track Stop 
  550. End Proc
  551. Procedure TWOJE_ZADANIE
  552.    USTAW_FONT[9]
  553.    CZYSC
  554.    Ink 10
  555.    NTEXT[50,NAZWY$(ROZDZIAL,PODROZDZIAL)]
  556.    NTEXT[90,"Zadanie "+Str$(NR_ZADANIA)]
  557.    NWAIT[50]
  558. End Proc
  559. Procedure PRZYKLAD
  560.    USTAW_FONT[9]
  561.    CZYSC
  562.    Ink 10
  563.    NTEXT[90,"Przyk�ad"]
  564.    NWAIT[50]
  565. End Proc
  566. Procedure ZADANIE[NAZWA$]
  567.    PRZYKLAD=False
  568.    ODPOWIEDZIAL=False
  569.    Repeat 
  570.       If Not PRZYKLAD
  571.          TWOJE_ZADANIE
  572.          RYSUJ[NAZWA$]
  573.       Else 
  574.          PRZYKLAD
  575.          RYSUJ[Left$(NAZWA$,Len(NAZWA$)-1)]
  576.          PRZYKLAD=False
  577.       End If 
  578.    Until ODPOWIEDZIAL or(KONIEC and(STREFA<>21))
  579. End Proc
  580. Procedure HELP
  581.    RESET
  582.    CZYSC
  583.    RYSUJ["Help"]
  584.    CZYSC
  585. End Proc
  586. Procedure PLANSZA
  587.    Put Block 11
  588.    Every 10 Proc OKO
  589.    Every On 
  590.    'Clip OKNO_X1,OKNO_Y1 To OKNO_X2,OKNO_Y2 
  591.    D=Dialog Run(1)
  592. End Proc
  593. Procedure RYSUJ[NAZWA$]
  594. '   Ink KOLOR_TLA
  595.    Dialog Freeze 
  596.    CZYTAJ_DYSK[NAZWA$]
  597.    Dialog Unfreeze 
  598.    POKAZ[OKNO_X1,OKNO_Y1]
  599. End Proc
  600. Procedure CZYTAJ_DYSK[NAZWA$]
  601.    Dir$=KATALOG$
  602.    Bload NAZWA$,POCZATEK
  603.    Open In 1,NAZWA$
  604.    WIERZCHOLEK=Lof(1)
  605.    Close 1
  606. End Proc
  607. Procedure USTAL_FONTY
  608.    SZUKAJ_FONT["topazpl",8] : FONTY(1)=Param
  609. '   SZUKAJ_FONT["topazpl",9] : FONTY(2)=Param
  610. '   SZUKAJ_FONT["topaz",11] : FONTY(3)=Param 
  611. '   SZUKAJ_FONT["ruby",8] : FONTY(4)=Param 
  612. '   SZUKAJ_FONT["ruby",12] : FONTY(5)=Param
  613. '   SZUKAJ_FONT["ruby",15] : FONTY(6)=Param
  614. '   SZUKAJ_FONT["pearl",8] : FONTY(7)=Param
  615. '   SZUKAJ_FONT["pl",8] : FONTY(8)=Param 
  616.    SZUKAJ_FONT["garnet",9] : FONTY(9)=Param
  617. '   SZUKAJ_FONT["sapphire",14] : FONTY(10)=Param 
  618. '   SZUKAJ_FONT["sm_ed",9] : FONTY(11)=Param 
  619. '   SZUKAJ_FONT["dpaint",5] : FONTY(12)=Param
  620. End Proc
  621. Procedure USTAW_LINIE[X]
  622.    RODZAJ_LINII=X
  623.    If X=1 Then Set Line %1111111111111111
  624.    If X=2 Then Set Line %1111000011110000
  625.    If X=3 Then Set Line %1100110011001100
  626. End Proc
  627. Procedure USTAW_FONT[X]
  628.    STYL=Text Styles
  629.    NR_FONTU=X
  630.    Set Font FONTY(X)
  631.    Set Text STYL
  632. End Proc
  633. Procedure ZAPAMIETAJ_ODPOWIEDZ[B]
  634.    If PIERWSZY_RAZ
  635.       ODPOW_X=KURSOR_X
  636.       ODPOW_Y=KURSOR_Y
  637.       PIERWSZY_RAZ=False
  638.       WYNIK$=""
  639.    End If 
  640.    WYNIK$=WYNIK$+Chr$(B)
  641. End Proc
  642. Procedure PODAJ_ODPOWIEDZ[ODPOW_X,ODPOW_Y,DLUGOSC]
  643.    ODPOW_X0=ODPOW_X
  644.    ODPOWIEDZ$=""
  645.    Ink KOLOR_ATRAMENTU
  646.    Set Text STYL
  647.    Repeat 
  648.       ZNAK$=""
  649.       Z$=Inkey$
  650.       Sprite 2,X Hard(ODPOW_X0),Y Hard(ODPOW_Y),1
  651.  
  652.       Rem strefy:
  653.       If STREFA>0 and STREFA<11
  654.          ZNAK$=Chr$(47+STREFA)
  655.          STREFA=Dialog(1)
  656.       End If 
  657.       If STREFA=12
  658.          ZNAK$="-"
  659.          STREFA=Dialog(1)
  660.       End If 
  661.       If STREFA=11
  662.          ZNAK$="+"
  663.          STREFA=Dialog(1)
  664.       End If 
  665.       If STREFA=13
  666.          ZNAK$="*"
  667.          STREFA=Dialog(1)
  668.       End If 
  669.       If STREFA=14
  670.          ZNAK$="/"
  671.          STREFA=Dialog(1)
  672.       End If 
  673.       If STREFA=25
  674.          ZNAK$="."
  675.          STREFA=Dialog(1)
  676.       End If 
  677.  
  678.  
  679.       If Asc(ZNAK$)>41 and Asc(ZNAK$)<63 and Len(ODPOWIEDZ$)<DLUGOSC
  680.          ODPOWIEDZ$=ODPOWIEDZ$+ZNAK$
  681.          ODSTEP_X=Text Length(ZNAK$)
  682.          Ink KOLOR_ATRAMENTU
  683.          Text ODPOW_X0,ODPOW_Y+Text Base,ZNAK$
  684.          ODPOW_X0=ODPOW_X0+ODSTEP_X
  685.       End If 
  686.  
  687.       If STREFA=16
  688.          Ink KOLOR_TLA
  689.          ZNAK$=Mid$(ODPOWIEDZ$,Len(ODPOWIEDZ$),1)
  690.          ODSTEP_X=Text Length(ZNAK$)
  691.          ODPOW_X0=ODPOW_X0-ODSTEP_X
  692.          Text ODPOW_X0,ODPOW_Y+Text Base,ZNAK$
  693.          ODPOWIEDZ$=Left$(ODPOWIEDZ$,Len(ODPOWIEDZ$)-1)
  694.          Ink KOLOR_ATRAMENTU
  695.          Sprite 2,X Hard(ODPOW_X0),Y Hard(ODPOW_Y),1
  696.          STREFA=Dialog(1)
  697.       End If 
  698.  
  699.       If Key State(68) or(STREFA=17)
  700.          Sprite Off 2
  701.          Pop Proc
  702.       End If 
  703.       If STREFA=15 Then KALKULATOR
  704.    Until KONIEC
  705.    Sprite Off 2
  706. End Proc
  707. Procedure POKAZ[XX,YY]
  708.    CZYSC
  709.    PRAWIDLOWA_ODP=True
  710.    Sprite Off 2
  711.    Def Fn BAJT(P)=Peek(POCZATEK+P)
  712.    Def Fn SLOWO(P)=Peek(POCZATEK+P)+256*Peek(POCZATEK+P+1)
  713.    KOLOR_ATRAMENTU=KOLOR_ATRAMENTU0
  714.    USTAW_FONT[1]
  715.    Set Text 0
  716.    Set Line %1111111111111111
  717.    PC=0
  718.    N=16
  719.    KONIEC=False
  720.    While(PC<WIERZCHOLEK) and Not KONIEC
  721.       B= Fn BAJT(PC)
  722.  
  723.       If B>N and B<32
  724.          PC=PC+1
  725.       End If 
  726.  
  727.       If B>31
  728.          If ODPOW
  729.             ZAPAMIETAJ_ODPOWIEDZ[B]
  730.          Else 
  731.             Set Text STYL
  732.             ODSTEP_X=PRZESUNIECIE+Text Length(Chr$( Fn BAJT(PC)))
  733.             Ink KOLOR_ATRAMENTU
  734.             Text XX+KURSOR_X,YY+KURSOR_Y+Text Base,Chr$( Fn BAJT(PC))
  735.             KURSOR_X=KURSOR_X+ODSTEP_X
  736.          End If 
  737.          PC=PC+1
  738.       End If 
  739.  
  740.       If B<=N
  741.          On B Gosub 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
  742.       End If 
  743.       If(B=0) or(B>16) and(B<32) Then PC=PC+1
  744.       If STREFA=15 Then KALKULATOR
  745.    Wend 
  746.    If KONIEC Then ODPOWIEDZIAL=False
  747.    WIERZCHOLEK=PC
  748.    ODPOW=False
  749.    Pop Proc
  750.  
  751.    9
  752.    INFO_ON["Naci�nij przycisk myszy aby konynuowa�"]
  753.    CLICK
  754.    INFO_OFF
  755.    PC=PC+1
  756.    Return 
  757.  
  758.    1
  759.    KURSOR_X= Fn SLOWO(PC+1)
  760.    KURSOR_Y= Fn BAJT(PC+3)
  761.    PC=PC+4
  762.    Return 
  763.  
  764.    6
  765.    X1= Fn SLOWO(PC+1)
  766.    Y1= Fn BAJT(PC+3)
  767.    X2= Fn SLOWO(PC+4)
  768.    Y2= Fn BAJT(PC+6)
  769.    Ink KOLOR_FLASH,,KOLOR_FLASH
  770.    Set Pattern 0
  771.    Box XX+X1,YY+Y1 To XX+X2,YY+Y2
  772.    Paint XX+X1+1,YY+Y1+1,1
  773.    PC=PC+7
  774.    Return 
  775.  
  776.    7
  777.    X= Fn SLOWO(PC+1)
  778.    Y= Fn BAJT(PC+3)
  779.    Set Pattern 0
  780.    Ink KOLOR_TLA
  781.    Paint XX+X,YY+Y,0
  782.    PC=PC+4
  783.    Return 
  784.  
  785.    2
  786.    X1= Fn SLOWO(PC+1)
  787.    Y1= Fn BAJT(PC+3)
  788.    X2= Fn SLOWO(PC+4)
  789.    Y2= Fn BAJT(PC+6)
  790.    Ink KOLOR_ATRAMENTU
  791.    Draw XX+X1,YY+Y1 To XX+X2,YY+Y2
  792.    PC=PC+7
  793.    Return 
  794.  
  795.    3
  796.    X= Fn SLOWO(PC+1)
  797.    Y= Fn BAJT(PC+3)
  798.    R= Fn BAJT(PC+4)
  799.    Ink KOLOR_ATRAMENTU
  800.    Circle XX+X,YY+Y,R
  801.    PC=PC+5
  802.    Return 
  803.  
  804.    8
  805.    X= Fn SLOWO(PC+1)
  806.    Y= Fn BAJT(PC+3)
  807.    WZOREK= Fn BAJT(PC+4)
  808.    Set Pattern WZOREK
  809.    Ink KOLOR_ATRAMENTU
  810.    Paint XX+X,YY+Y,0
  811.    PC=PC+5
  812.    Return 
  813.  
  814.    13
  815.    X= Fn BAJT(PC+1)
  816.    USTAW_LINIE[X]
  817.    PC=PC+2
  818.    Return 
  819.  
  820.    11
  821.    X= Fn BAJT(PC+1)
  822.    USTAW_FONT[X]
  823.    PC=PC+2
  824.    Return 
  825.  
  826.    10
  827.    KOLOR_ATRAMENTU= Fn BAJT(PC+1)
  828.    PC=PC+2
  829.    Return 
  830.  
  831.    12
  832.    Set Text Fn BAJT(PC+1)
  833.    PC=PC+2
  834.    Return 
  835.  
  836.    14
  837.    Def Scroll 1,OKNO_X1,OKNO_Y1+KRATA_Y To OKNO_X2,OKNO_Y2,0,-KRATA_Y
  838.    For I=1 To 20
  839.       Scroll 1
  840.    Next I
  841.    PC=PC+1
  842.    Return 
  843.  
  844.    4
  845.    X= Fn SLOWO(PC+1)
  846.    Y= Fn BAJT(PC+3)
  847.    Ink KOLOR_ATRAMENTU
  848.    Circle XX+X,YY+Y,1
  849.    PC=PC+4
  850.    Return 
  851.  
  852.    5
  853.    X1= Fn SLOWO(PC+1)
  854.    Y1= Fn BAJT(PC+3)
  855.    X2= Fn SLOWO(PC+4)
  856.    Y2= Fn BAJT(PC+6)
  857.    Ink KOLOR_ATRAMENTU
  858.    Box XX+X1,YY+Y1 To XX+X2,YY+Y2
  859.    PC=PC+7
  860.    Return 
  861.  
  862.    15
  863.    PIERWSZY_RAZ=True
  864.    ODPOW=True
  865.    PC=PC+1
  866.    Return 
  867.  
  868.    16
  869.    ODPOWIEDZIAL=True
  870.    ODPOW=False
  871.    PODAJ_ODPOWIEDZ[XX+ODPOW_X,YY+ODPOW_Y,Len(WYNIK$)]
  872.    If STREFA=17 Then STREFA=0
  873.    ODPOWIEDZ$=ODPOWIEDZ$+Space$(Len(WYNIK$)-Len(ODPOWIEDZ$))
  874.    If ODPOWIEDZ$<>WYNIK$ Then PRAWIDLOWA_ODP=False
  875.  
  876.    PC=PC+1
  877.    Return 
  878. End Proc
  879. Procedure SZUKAJ_FONT[NAZWA_FONTU$,ROZMIAR]
  880.    KON=0
  881.    NUMER_FONTU=0
  882.    NAZWA_FONTU$=Upper$(NAZWA_FONTU$+".font")
  883.    While KON=0
  884.       Inc NUMER_FONTU
  885.       FONT_AKT$=Font$(NUMER_FONTU)
  886.       NAZWA_FONTU_AKT$=Mid$(FONT_AKT$,1,29)
  887.       SPACJA=Instr(NAZWA_FONTU_AKT$," ")
  888.       NAZWA_FONTU_AKT$=Left$(NAZWA_FONTU_AKT$,SPACJA-1)
  889.       ROZMIAR_AKT$=Mid$(FONT_AKT$,30,4)
  890.       ROZMIAR_AKT=Val(ROZMIAR_AKT$)
  891.       NAZWA_FONTU_AKT$=Upper$(NAZWA_FONTU_AKT$)
  892.       If NAZWA_FONTU_AKT$="" Then Pop Proc
  893.       If NAZWA_FONTU_AKT$=NAZWA_FONTU$
  894.          If ROZMIAR_AKT=ROZMIAR
  895.             Set Font NUMER_FONTU
  896.             KON=1
  897.          End If 
  898.       End If 
  899.    Wend 
  900. End Proc[NUMER_FONTU]
  901. Procedure OKO
  902.    Every Off 
  903.    STEROWANIE
  904.    MYSZ_X=X Screen(X Mouse)
  905.    MYSZ_Y=Y Screen(Y Mouse)
  906.    A=MYSZ_X-OKO1_X
  907.    B=MYSZ_Y-OKO1_Y
  908.    If A*A+B*B>=PROMIEN_OKA*PROMIEN_OKA
  909.       K#=PROMIEN_OKA/Sqr(A*A+B*B)
  910.    Else K#=1
  911.    End If 
  912.    ZRENICA1_X=OKO1_X+A*K#
  913.    ZRENICA1_Y=OKO1_Y+B*K#
  914.  
  915.  
  916.    A=MYSZ_X-OKO2_X
  917.    B=MYSZ_Y-OKO2_Y
  918.    If A*A+B*B>=PROMIEN_OKA*PROMIEN_OKA
  919.       K#=PROMIEN_OKA/Sqr(A*A+B*B)
  920.    Else K#=1
  921.    End If 
  922.    ZRENICA2_X=OKO2_X+A*K#
  923.    ZRENICA2_Y=OKO2_Y+B*K#
  924.    If ZRENICA1_Y<=212 Then ZRENICA1_Y=212
  925.    If ZRENICA2_Y<=212 Then ZRENICA2_Y=212
  926.    If ZRENICA1_Y>=218 Then ZRENICA1_Y=218
  927.    If ZRENICA2_Y>=218 Then ZRENICA2_Y=218
  928.    Bob 1,ZRENICA1_X-4,ZRENICA1_Y-4,2
  929.    Bob 2,ZRENICA2_X-4,ZRENICA2_Y-4,2
  930.    Every On 
  931. End Proc
  932. Procedure MUZYKA
  933.    GRA= Not GRA
  934.    If GRA Then Track Play 7 Else Track Stop 
  935. End Proc
  936. Procedure INFO_ON[TEKST$]
  937.    USTAW_FONT[1]
  938.    INFO_TEKST$=TEKST$
  939.    INFO_X=X
  940.    Ink 12
  941.    NTEXT[OKNO_Y2-2,INFO_TEKST$]
  942. End Proc
  943. Procedure INFO_OFF
  944.    USTAW_FONT[1]
  945.    Ink KOLOR_TLA
  946.    NTEXT[OKNO_Y2-2,INFO_TEKST$]
  947. End Proc
  948. Procedure NWAIT[CZAS]
  949. Dialog Freeze 
  950.    For I=1 To CZAS/10
  951.       Wait(5)
  952.    Next I
  953. Dialog Unfreeze 
  954. End Proc
  955. Procedure PRZYCISKI
  956.    A$="BAse 0,0;"
  957.    A$=A$+"BUtton   1,16,190,32,16,0,0,1;[UN 0,0,BP1+;][BR0;]"
  958.    A$=A$+"BUtton   2,64,190,32,16,0,0,1;[UN 0,0,BP3+;][BR0;]"
  959.    A$=A$+"BUtton   3,112,190,32,16,0,0,1;[UN 0,0,BP5+;][BR0;]"
  960.    A$=A$+"BUtton   4,160,190,32,16,0,0,1;[UN 0,0,BP7+;][BR0;]"
  961.    A$=A$+"BUtton   5,210,190,32,16,0,0,1;[UN 0,0,BP9+;][BR0;]"
  962.    A$=A$+"BUtton   6,16,213,32,16,0,0,1;[UN 0,0,BP11+;][BR0;]"
  963.    A$=A$+"BUtton   7,64,213,32,16,0,0,1;[UN 0,0,BP13+;][BR0;]"
  964.    A$=A$+"BUtton   8,112,213,32,16,0,0,1;[UN 0,0,BP15+;][BR0;]"
  965.    A$=A$+"BUtton   9,160,213,32,16,0,0,1;[UN 0,0,BP17+;][BR0;]"
  966.    A$=A$+"BUtton   10,210,213,32,16,0,0,1;[UN 0,0,BP19+;][BR0;]"
  967.    A$=A$+"BUtton   11,16,235,32,16,0,0,1;[UN 0,0,BP43+;][BR0;]"
  968.    A$=A$+"BUtton   12,64,235,32,16,0,0,1;[UN 0,0,BP45+;][BR0;]"
  969.    A$=A$+"BUtton   13,112,235,32,16,0,0,1;[UN 0,0,BP35+;][BR0;]"
  970.    A$=A$+"BUtton   14,160,235,32,16,0,0,1;[UN 0,0,BP41+;][BR0;]"
  971.    A$=A$+"BUtton   15,260,235,64,16,0,0,1;[UN 0,0,BP47+;][BR0;]"
  972.    A$=A$+"BUtton   16,260,190,64,16,0,0,1;[UN 0,0,BP21+;][BR0;]"
  973.    A$=A$+"BUtton   17,260,213,64,16,0,0,1;[UN 0,0,BP23+;][BR0;]"
  974.    A$=A$+"BUtton   18,472,24,64,16,0,0,1;[UN 0,0,BP25+;][BR0;]"
  975.    A$=A$+"BUtton   19,560,24,64,16,0,0,1;[UN 0,0,BP31+;][BR0;]"
  976.    A$=A$+"BUtton   20,472,54,64,16,0,0,1;[UN 0,0,BP29+;][BR0;]"
  977.    A$=A$+"BUtton   21,340,190,64,16,0,0,1;[UN 0,0,BP33+;][BR0;]"
  978.    A$=A$+"BUtton   22,560,54,64,16,0,0,1;[UN 0,0,BP37+;][BR0;]"
  979.    A$=A$+"BUtton   23,472,84,64,16,0,0,1;[UN 0,0,BP39+;][BR0;]"
  980.    A$=A$+"BUtton   24,560,84,64,16,0,0,1;[UN 0,0,BP27+;][BR0;]"
  981.    A$=A$+"BUtton   25,210,235,32,16,0,0,1;[UN 0,0,BP49+;][BR0;]"
  982.    A$=A$+"EXit;"
  983.    Dialog Open 1,A$,128,2000
  984. End Proc
  985. Procedure WYBOR
  986.    RESET
  987.    Every Off 
  988.    Dialog Clr 1
  989.    Sprite Off 2
  990.    Bob Off 
  991.    Bob Clear 
  992.    Wait(10)
  993.    Repeat 
  994.       WYBOR_ROZDZIALU
  995.       ROZDZIAL=Param
  996.       If ROZDZIAL=1 Then POTEGI_I_PIERWIASTKI
  997.       If ROZDZIAL=2 Then FUNKCJE_I_ROWNANIA
  998.       If ROZDZIAL=3 Then FIGURY_NA_PLASZCZYZNIE
  999.       PODROZDZIAL=Param
  1000.    Until PODROZDZIAL<>-1
  1001. End Proc
  1002. Procedure WYBOR_ROZDZIALU
  1003. '   Put Block 3
  1004.    Fade 2
  1005.    Cls 0
  1006.    Load Iff "tales:w1"
  1007.    WYBRANE=False
  1008.    Reserve Zone 3
  1009.    Set Zone 1,172,70 To 476,91
  1010.    Set Zone 2,172,110 To 476,131
  1011.    Set Zone 3,172,150 To 476,171
  1012.    STR=0
  1013.    MYSZ=0
  1014.    Repeat 
  1015.       STR=Mouse Zone
  1016.       MYSZ=Mouse Key
  1017.    Until(STR<>0) and(MYSZ=1)
  1018.    Repeat 
  1019.       MYSZ=Mouse Key
  1020.    Until MYSZ=0
  1021.    Reserve Zone 
  1022. End Proc[STR]
  1023. Procedure POTEGI_I_PIERWIASTKI
  1024.    Put Block 5
  1025.    Reserve Zone 7
  1026.    Set Zone 1,172,55 To 476,73
  1027.    Set Zone 2,172,75 To 476,93
  1028.    Set Zone 3,172,95 To 476,113
  1029.    Set Zone 4,172,115 To 476,133
  1030.    Set Zone 5,172,135 To 476,153
  1031.    Set Zone 6,172,155 To 476,173
  1032.    Set Zone 7,172,175 To 476,193
  1033.    STR=0
  1034.    MYSZ=0
  1035.    Repeat 
  1036.       STR=Mouse Zone
  1037.       MYSZ=Mouse Key
  1038.    Until(STR<>0) and(MYSZ=1)
  1039.    Repeat 
  1040.       MYSZ=Mouse Key
  1041.    Until MYSZ=0
  1042.    If STR=7 Then STR=-1
  1043.    Reserve Zone 
  1044. End Proc[STR]
  1045. Procedure FUNKCJE_I_ROWNANIA
  1046.    Put Block 7
  1047.    Reserve Zone 8
  1048.    Set Zone 1,172,50 To 476,68
  1049.    Set Zone 2,172,70 To 476,88
  1050.    Set Zone 3,172,90 To 476,108
  1051.    Set Zone 4,172,110 To 476,128
  1052.    Set Zone 5,172,130 To 476,148
  1053.    Set Zone 6,172,150 To 476,168
  1054.    Set Zone 7,172,170 To 476,188
  1055.    Set Zone 8,172,190 To 476,208
  1056.    STR=0
  1057.    MYSZ=0
  1058.    Repeat 
  1059.       STR=Mouse Zone
  1060.       MYSZ=Mouse Key
  1061.    Until(STR<>0) and(MYSZ=1)
  1062.    Repeat 
  1063.       MYSZ=Mouse Key
  1064.    Until MYSZ=0
  1065.    If STR=8 Then STR=-1
  1066.    Reserve Zone 
  1067. End Proc[STR]
  1068. Procedure FIGURY_NA_PLASZCZYZNIE
  1069.    Put Block 9
  1070.    Reserve Zone 6
  1071.    Set Zone 1,172,68 To 476,85
  1072.    Set Zone 2,172,88 To 476,105
  1073.    Set Zone 3,172,108 To 476,125
  1074.    Set Zone 4,172,128 To 476,145
  1075.    Set Zone 5,172,148 To 476,165
  1076.    Set Zone 6,172,168 To 476,185
  1077.    STR=0
  1078.    MYSZ=0
  1079.    Repeat 
  1080.       STR=Mouse Zone
  1081.       MYSZ=Mouse Key
  1082.    Until(STR<>0) and(MYSZ=1)
  1083.    Repeat 
  1084.       MYSZ=Mouse Key
  1085.    Until MYSZ=0
  1086.    If STR=6 Then STR=-1
  1087.    Reserve Zone 
  1088. End Proc[STR]
  1089. Procedure KALK[ODP_X,ODP_Y,DLUGOSC]
  1090.    ODP_X0=ODP_X
  1091.    ODPOW$=""
  1092.    Set Text STYL
  1093.    Repeat 
  1094.       ZNAK$=Inkey$
  1095.       Sprite 2,X Hard(ODP_X0),Y Hard(ODP_Y)-Text Base,1
  1096.  
  1097.       Rem strefy:
  1098.       If STREFA>0 and STREFA<11
  1099.          ZNAK$=Chr$(47+STREFA)
  1100.          STREFA=Dialog(1)
  1101.       End If 
  1102.       If STREFA=12
  1103.          ZNAK$="-"
  1104.          STREFA=Dialog(1)
  1105.       End If 
  1106.       If STREFA=11
  1107.          ZNAK$="+"
  1108.          STREFA=Dialog(1)
  1109.       End If 
  1110.       If STREFA=13
  1111.          ZNAK$="*"
  1112.          STREFA=Dialog(1)
  1113.       End If 
  1114.       If STREFA=14
  1115.          ZNAK$="/"
  1116.          STREFA=Dialog(1)
  1117.       End If 
  1118.       If STREFA=25
  1119.          ZNAK$="."
  1120.          STREFA=Dialog(1)
  1121.       End If 
  1122.  
  1123.       If Asc(ZNAK$)>41 and Asc(ZNAK$)<63 and Len(ODPOW$)<DLUGOSC
  1124.          ODPOW$=ODPOW$+ZNAK$
  1125.          ODSTEP_X=Text Length(ZNAK$)
  1126.          Ink 12
  1127.          Text ODP_X0,ODP_Y,ZNAK$
  1128.          ODP_X0=ODP_X0+ODSTEP_X
  1129.       End If 
  1130.  
  1131.       If STREFA=16
  1132.          Ink KOLOR_TLA
  1133.          ZNAK$=Mid$(ODPOW$,Len(ODPOW$),1)
  1134.          ODSTEP_X=Text Length(ZNAK$)
  1135.          ODP_X0=ODP_X0-ODSTEP_X
  1136.          Text ODP_X0,ODP_Y,ZNAK$
  1137.          ODPOW$=Left$(ODPOW$,Len(ODPOW$)-1)
  1138.          Ink 12
  1139.          Sprite 2,X Hard(ODP_X0),Y Hard(ODP_Y)-Text Base,1
  1140.          STREFA=Dialog(1)
  1141.       End If 
  1142.  
  1143.       If Key State(68) or(STREFA=17)
  1144.          Sprite Off 2
  1145.          Pop Proc
  1146.       End If 
  1147.       If STREFA=15 or KONIEC
  1148.          KALK_KONIEC=True
  1149.          Pop Proc
  1150.       End If 
  1151.    Until KONIEC
  1152.    Sprite Off 2
  1153. End Proc
  1154. Procedure BLEDNA_LICZBA[L$]
  1155.    If L$="" Then Pop Proc[True]
  1156.    CZY_ZNAK=(Left$(L$,1)="-") or(Left$(L$,1)="+")
  1157.    If CZY_ZNAK Then L$=Right$(L$,Len(L$)-1)
  1158.    If L$="" Then Pop Proc[True]
  1159.    If Len(L$)>9 Then Pop Proc[True]
  1160.    KROPKI=0
  1161.    For I=1 To Len(L$)
  1162.       ZNAK$=Mid$(L$,I,1)
  1163.       If ZNAK$="." Then Inc KROPKI
  1164.       If(ZNAK$="-") or(ZNAK$="+") or(ZNAK$="/") or(ZNAK$="*") Then Pop Proc[True]
  1165.    Next I
  1166.    If KROPKI>1 Then Pop Proc[True]
  1167. End Proc[False]
  1168. Procedure BLAD[L1$,L2$]
  1169.    BLEDNA_LICZBA[L1$]
  1170.    If Param Then Pop Proc[True]
  1171.    BLEDNA_LICZBA[L2$]
  1172.    If Param Then Pop Proc[True]
  1173. End Proc[False]
  1174. Procedure KALKULATOR
  1175.    Fix(8)
  1176.    KALK_X=OKNO_X1+8
  1177.    KALK_Y=OKNO_Y2-2
  1178.    STREFA=0
  1179.    Repeat 
  1180.       Repeat 
  1181.          KALK_KONIEC=False
  1182.          KALK[KALK_X,KALK_Y,21]
  1183.          If KALK_KONIEC or KONIEC
  1184.             Sprite Off 2
  1185.             Ink KOLOR_TLA
  1186.             Text KALK_X,KALK_Y,ODPOW$
  1187.             STREFA=0
  1188.             Pop Proc
  1189.          End If 
  1190.       Until ODPOW$<>""
  1191.       N=0
  1192.       ZNALAZL=False
  1193.       Repeat 
  1194.          N=N+1
  1195.          ZNAK$=Mid$(ODPOW$,N,1)
  1196.          If(ZNAK$="*") or(ZNAK$="-") or(ZNAK$="+") or(ZNAK$="/")
  1197.             If Not((N=1) and(ZNAK$="-"))
  1198.                ZNALAZL=True
  1199.                Exit 
  1200.             End If 
  1201.          End If 
  1202.       Until N>=Len(ODPOW$)
  1203.       If Not ZNALAZL
  1204.          BLEDNA_LICZBA[ODPOW$]
  1205.          If Param
  1206.             ODPOW$=ODPOW$+"      B��D"
  1207.          Else 
  1208.             ODPOW$=ODPOW$+" = "+ODPOW$
  1209.          End If 
  1210.       Else 
  1211.          PIERWSZA$=Left$(ODPOW$,N-1)
  1212.          DRUGA$=Right$(ODPOW$,Len(ODPOW$)-N)
  1213.          PIERWSZA_LICZBA#=Val(PIERWSZA$)
  1214.          DRUGA_LICZBA#=Val(DRUGA$)
  1215.          If ZNAK$="-"
  1216.             Trap WYNIK#=PIERWSZA_LICZBA#-DRUGA_LICZBA#
  1217.          End If 
  1218.          If ZNAK$="+"
  1219.             Trap WYNIK#=PIERWSZA_LICZBA#+DRUGA_LICZBA#
  1220.          End If 
  1221.          If ZNAK$="*"
  1222.             Trap WYNIK#=PIERWSZA_LICZBA#*DRUGA_LICZBA#
  1223.          End If 
  1224.          If ZNAK$="/"
  1225.             Trap WYNIK#=PIERWSZA_LICZBA#/DRUGA_LICZBA#
  1226.          End If 
  1227.  
  1228.          BLAD[PIERWSZA$,DRUGA$]
  1229.          If Errtrap<>0 or Param
  1230.             ODPOW$=ODPOW$+"      B��D"
  1231.          Else 
  1232.             ODPOW$=ODPOW$+" = "+Str$(WYNIK#)
  1233.          End If 
  1234.       End If 
  1235.       Ink 12
  1236.       Text KALK_X,KALK_Y,ODPOW$
  1237.       Repeat 
  1238.          If STREFA=15 or KONIEC
  1239.             Sprite Off 2
  1240.             Ink KOLOR_TLA
  1241.             Text KALK_X,KALK_Y,ODPOW$
  1242.             STREFA=0
  1243.             Pop Proc
  1244.          End If 
  1245.       Until(STREFA>0 and STREFA<11) or(STREFA=15) or(STREFA=12)
  1246.       Ink KOLOR_TLA
  1247.       Text KALK_X,KALK_Y,ODPOW$
  1248.    Until STREFA=15 or KONIEC
  1249.    Sprite Off 2
  1250.    ODPOW$=""
  1251.    STREFA=0
  1252. End Proc
  1253. Procedure KONIEC
  1254.    Sprite Off 
  1255.    Get Block 20,OKNO_X1,OKNO_Y2-10,OKNO_X2-OKNO_X1-10,10
  1256.    Cls KOLOR_TLA,OKNO_X1,OKNO_Y2-10 To OKNO_X2,OKNO_Y2
  1257.    INFO_ON["Czy na pewno chcesz sko�czy� ? (T/N)"]
  1258.    Repeat 
  1259.       K$=Inkey$
  1260.    Until K$<>""
  1261.    K$=Upper$(K$)
  1262.    If K$="T"
  1263.       Dialog Close 
  1264.       Every Off 
  1265.       Track Stop 
  1266.       End 
  1267.    End If 
  1268.    INFO_OFF
  1269.    Put Block 20
  1270. End Proc